// -----------------------------
// Author: 		Dhaenens Gert 
// Creation: 	3/4/2014 10:27:44 PM				
// -----------------------------

#ifndef _Color_h
#define _Color_h

#include "Defines.h"

struct Vector4;
struct Vector3;

struct Color
{

	/* Constants */
	static const Color White;
	static const Color Black;
	static const Color Grey;
	static const Color Red;
	static const Color Green;
	static const Color Blue;
	static const Color Cyan;
	static const Color Yellow;
	static const Color Magenta;
	static const Color LightGrey;
	static const Color LightRed;
	static const Color LightGreen;
	static const Color LightBlue;
	static const Color LightCyan;
	static const Color LightYellow;
	static const Color LightMagenta;
	static const Color DarkGrey;
	static const Color DarkRed;
	static const Color DarkGreen;
	static const Color DarkBlue;
	static const Color DarkCyan;
	static const Color DarkYellow;
	static const Color DarkMagenta;

	/* Datamembers */
	Float	r;
	Float	g;
	Float	b;
	Float	a;

	/* Constructors */
	Color();
	Color(Float r, Float g, Float b);
	Color(Float r, Float g, Float b, Float a);
	Color(UInt32 uColor);
	Color(Vector4 color);
	Color(Vector3 color);
	Color(Vector3 color, Float a);

	Color(const Color& refColor);

	Color& operator=(const Color& refColor);

	Vector4 ToVector4() const;
	Vector3 ToVector3() const;

	static Color	FromRGBA(UInt8 r, UInt8 g, UInt8 b, UInt8 a);
	static Color	Lerp(const Color& a, const Color& b, Float alpha);

};

#endif